home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The 640 MEG Shareware Studio 2
/
The 640 Meg Shareware Studio CD-ROM Volume II (Data Express)(1993).ISO
/
pascal
/
xlib.zip
/
XSTREAM.INT
< prev
next >
Wrap
Text File
|
1992-09-06
|
6KB
|
156 lines
(*****************************************************************************)
(* *)
(* filename : XSTREAM.PAS *)
(* author : Stefan Boether / Compuserve Id : 100023,275 *)
(* FidoNet : 2:242/200 *)
(* FidoNet : 2:243/91 *)
(* Internet: 100023.275@CompuServe.COM *)
(* system : TURBO 6.01 / TPW 1.0 / DOS 3.3 / WIN 3.1 *)
(* changes : *)
(* when what who *)
(*---------------------------------------------------------------------------*)
(*****************************************************************************)
(* Description : Extended Stream access *)
(*****************************************************************************)
UNIT XStream; {$D-,O+}
INTERFACE
USES Dos, Objects;
TYPE PMemStream = ^TMemStream;
TMemStream = OBJECT ( TStream )
BuffSize : WORD;
Buffer : POINTER;
Position : LONGINT;
CONSTRUCTOR Init( ASize : Word );
DESTRUCTOR Done; virtual;
FUNCTION GetPos: LongInt; virtual;
FUNCTION GetSize: LongInt; virtual;
PROCEDURE Read(var Buf; Count: word); virtual;
PROCEDURE Seek(Pos: LongInt); virtual;
PROCEDURE Write(var Buf; Count: word); virtual;
END;
PObjStream = ^TObjStream;
TObjStream = OBJECT ( TMemStream )
CONSTRUCTOR Init( AAddr:POINTER );
DESTRUCTOR Done; virtual;
PROCEDURE Write(var Buf; Count: word); virtual;
END;
PPortStream = ^TPortStream;
TPortStream = object( TStream )
ThePort : Integer;
TimeOut : Byte;
OldTimeOut : Byte;
constructor Init( APort:Integer; ATimeOut:Byte);
destructor Done; virtual;
constructor Load( var S:TStream );
procedure Store( var S:TStream );
function GetTimeOut:Byte; virtual;
procedure SetTimeOut(B:Byte); virtual;
function InitPort:Boolean; virtual;
end;
CONST Lpt1 = 1;
Lpt2 = 2;
Lpt3 = 3;
Lpt4 = 4;
Com1 = 1;
Com2 = 2;
TYPE PLptStream = ^TLptStream;
TLptStream = object( TPortStream )
constructor Init( APort:Integer; ATimeOut:Byte);
constructor Load( var S:TStream );
function GetTimeOut:Byte; virtual;
procedure SetTimeOut(B:Byte); virtual;
procedure Write( var Buf; Count:Word ); virtual;
function InitPort:Boolean; virtual;
end;
PComStream = ^TComStream;
TComStream = object( TPortStream )
ComParam : Byte;
constructor Init( APort:Integer; ATimeOut:Byte;
ABaud:Word; AData:Byte; AParity:Char; AStop:Byte);
constructor Load( var S:TStream );
procedure Store( var S:TStream );
function GetTimeOut:Byte; virtual;
procedure SetTimeOut(B:Byte); virtual;
procedure Write( var Buf; Count:Word ); virtual;
function InitPort:Boolean; virtual;
end;
PNulStream = ^TNulStream;
TNulStream = object( TStream )
Size : LongInt;
constructor Init;
function GetSize: LongInt; VIRTUAL;
function GetPos: LongInt; VIRTUAL;
constructor Load( var S:TStream );
procedure Store( var S:TStream );
procedure Write( var Buf; Count:Word ); virtual;
end;
PCRCStream = ^TCRCStream;
TCRCStream = OBJECT(TNulStream)
CRC: Word;
CONSTRUCTOR Init;
FUNCTION GetCRC: LongInt; VIRTUAL;
PROCEDURE Write(VAR Buf; Count: Word); VIRTUAL;
END;
PXmsStream = ^TXmsStream;
TXmsStream = OBJECT ( TStream )
Handle : WORD;
Size : LONGINT;
Position : LONGINT;
Blocks : WORD;
CONSTRUCTOR Init;
DESTRUCTOR Done; virtual;
FUNCTION GetPos: LongInt; virtual;
FUNCTION GetSize: LongInt; virtual;
PROCEDURE Read(var Buf; Count: word); virtual;
PROCEDURE Seek(Pos: LongInt); virtual;
PROCEDURE Write(var Buf; Count: word); virtual;
FUNCTION MaxAvail : WORD;
FUNCTION MemAvail : WORD;
PRIVATE
FUNCTION Check( InfoCode:INTEGER ) : BOOLEAN;
END;
CONST RLptStream: TStreamRec = (
ObjType: 20100;
VmtLink: Ofs(TypeOf(TLptStream)^);
Load: @TLptStream.Load;
Store: @TLptStream.Store
);
RComStream: TStreamRec = (
ObjType: 20101;
VmtLink: Ofs(TypeOf(TComStream)^);
Load: @TComStream.Load;
Store: @TComStream.Store
);
RNulStream: TStreamRec = (
ObjType: 20102;
VmtLink: Ofs(TypeOf(TNulStream)^);
Load: @TNulStream.Load;
Store: @TNulStream.Store
);
ResObjAddr : Pointer = Nil;
PROCEDURE RegisterXStream;
FUNCTION MemoryStrm( FName : PATHSTR ) : PStream;